package cc.rengu.igas.bomp.common.enums;

import cc.rengu.oltp.utility.util.StringUtil;

/**
 * @version 1.0
 * @author: zhangxuran
 * @Date: 2020/4/14 21:30
 * @Description: 微信返回的实名认证状态
 */
public enum WechatRealNameApplyStatusEnum {

    //-【编辑中】：可能提交申请发生了错误导致，可用同一个业务申请编号重新提交。
    APPLYMENT_STATE_EDITTING("APPLYMENT_STATE_EDITTING", "01", "编辑中"),
    //-【审核中】：请耐心等待1~2个工作日，微信支付将会完成审核。
    APPLYMENT_STATE_WAITTING_FOR_AUDIT("APPLYMENT_STATE_WAITTING_FOR_AUDIT", "00", "审核中"),
    //-【待确认联系信息】：请扫描微信支付返回的小程序码确认联系信息(此过程可修改超级管理员手机号)。
    APPLYMENT_STATE_WAITTING_FOR_CONFIRM_CONTACT("APPLYMENT_STATE_WAITTING_FOR_CONFIRM_CONTACT", "01", "待确认联系信息"),
    //-【待账户验证】：请扫描微信支付返回的小程序码在小程序端完成账户验证。
    APPLYMENT_STATE_WAITTING_FOR_CONFIRM_LEGALPERSON("APPLYMENT_STATE_WAITTING_FOR_CONFIRM_LEGALPERSON", "02", "待账户验证"),
    // -【审核通过】：请扫描微信支付返回的小程序码在小程序端完成授权流程。
    APPLYMENT_STATE_PASSED("APPLYMENT_STATE_PASSED", "03", "审核通过"),
    // -【审核驳回】：请按照驳回原因修改申请资料，并更换业务申请编码，重新提交申请。
    APPLYMENT_STATE_REJECTED("APPLYMENT_STATE_REJECTED", "10", "审核驳回"),
    // -【已冻结】：可能是该主体已完成过入驻，请查看驳回原因，并通知驳回原因中指定的联系人扫描微信支付返回的小程序码在小程序端完成授权流程。
    APPLYMENT_STATE_FREEZED("APPLYMENT_STATE_FREEZED", "11", "已冻结"),
    // -【已作废】：表示申请单已被撤销，无需再对其进行操作
    APPLYMENT_STATE_CANCELED("APPLYMENT_STATE_CANCELED", "12", "已作废"),

    ;

    private String wechatStatus;

    private String igasStatus;

    private String desc;

    /**
     * 微信实名认证申请中
     */
    public static final String WECHAT_REAL_NAME_APPLYING = "I";
    /**
     * 微信实名认证待商户确认
     */
    public static final String WECHAT_REAL_NAME_MCHNT_CONFIRMED = "M";
    /**
     * 微信实名认证拒绝
     */
    public static final String WECHAT_REAL_NAME_REJECT = "R";

    /**
     * 微信未授权
     */
    public static final String AUTHORIZE_STATE_UNAUTHORIZED = "AUTHORIZE_STATE_UNAUTHORIZED";
    /**
     * 微信已授权
     */
    public static final String AUTHORIZE_STATE_AUTHORIZED = "AUTHORIZE_STATE_AUTHORIZED";


    public static String getWechatRealNameApplyStatusEnumByWechatStatus(String wechatStatus) {
        if (StringUtil.isEmptyOrNull(wechatStatus)) {
            return null;
        }

        for (WechatRealNameApplyStatusEnum wechatRealNameApplyStatusEnum : WechatRealNameApplyStatusEnum.values()) {
            if (wechatRealNameApplyStatusEnum.getWechatStatus().equals(wechatStatus)) {
                return wechatRealNameApplyStatusEnum.getIgasStatus();
            }
        }

        return null;
    }


    WechatRealNameApplyStatusEnum(String wechatStatus, String igasStatus, String desc) {
        this.wechatStatus = wechatStatus;
        this.igasStatus = igasStatus;
        this.desc = desc;
    }

    public String getWechatStatus() {
        return wechatStatus;
    }

    public String getIgasStatus() {
        return igasStatus;
    }

    public String getDesc() {
        return desc;
    }
}
